package com.fdb.efp.nls.service.impl;

import com.alibaba.fastjson.JSON;
import com.fdb.basic.framework.core.base.FrameworkService;
import com.fdb.efp.nls.service.dao.ColltTaskDistrDao;
import com.fdb.efp.nls.service.domain.ColltTaskDistr;
import com.fdb.efp.nls.service.facade.ColltTaskDistrService;
import com.fdb.efp.nls.service.vo.ColltTaskDistrVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Objects;

/**
 * <p>ServiceImpl: 催收任务分配<p>
 * @author ligm
 * @date 2019-08-27
 */
@Service("colltTaskDistrService")
public class ColltTaskDistrServiceImpl implements ColltTaskDistrService, FrameworkService {
	
	private static Logger logger = LoggerFactory.getLogger(ColltTaskDistrServiceImpl.class);

	@Autowired
	private ColltTaskDistrDao colltTaskDistrDao;
	
	/**
	 * 新增操作
	 */
	public int insertColltTaskDistr(ColltTaskDistrVO inColltTaskDistrVo) {
		logger.debug("当前新增数据为:"+ inColltTaskDistrVo.toString());
		int num = 0;
		try {
			ColltTaskDistr colltTaskDistr = new ColltTaskDistr();
			beanCopy(inColltTaskDistrVo, colltTaskDistr);
			num = colltTaskDistrDao.insertColltTaskDistr(colltTaskDistr);
		} catch (Exception e) {
			logger.error("新增数据发生异常!", e);
			num = -1;
		}
		logger.debug("当前新增数据条数为:"+ num);
		return num;
	}

	/**
	 * 删除操作
	 */
	public int deleteByPk(ColltTaskDistrVO inColltTaskDistrVo) {
		logger.debug("当前删除数据条件为:"+ inColltTaskDistrVo);
		int num = 0;
		try {
			ColltTaskDistr colltTaskDistr = new ColltTaskDistr();
			beanCopy(inColltTaskDistrVo, colltTaskDistr);
			num = colltTaskDistrDao.deleteByPk(colltTaskDistr);
		} catch (Exception e) {
			logger.error("删除数据发生异常!", e);
			num = -1;
		}
		logger.debug("根据条件:"+ inColltTaskDistrVo +"删除的数据条数为"+ num);
		return num;
	}


	/**
	 * 更新操作
	 */
	public int updateByPk(ColltTaskDistrVO inColltTaskDistrVo) {
		logger.debug("当前修改数据为:"+ inColltTaskDistrVo.toString());
		int num = 0;
		try {
			ColltTaskDistr colltTaskDistr = new ColltTaskDistr();
			beanCopy(inColltTaskDistrVo, colltTaskDistr);
			num = colltTaskDistrDao.updateByPk(colltTaskDistr);
		} catch (Exception e) {
			logger.error("修改数据发生异常!", e);
			num = -1;
		}
		logger.debug("根据条件:"+ inColltTaskDistrVo +"修改的数据条数为"+ num);
		return num;
	}
	
	/**
	 * 查询操作
	 */
	public ColltTaskDistrVO queryByPk(ColltTaskDistrVO inColltTaskDistrVo) {
		
		logger.debug("当前查询参数信息为:"+ inColltTaskDistrVo);
		try {
			ColltTaskDistr queryColltTaskDistr = new ColltTaskDistr();
			beanCopy(inColltTaskDistrVo, queryColltTaskDistr);
			ColltTaskDistr queryRslColltTaskDistr = colltTaskDistrDao.queryByPk(queryColltTaskDistr);
			if (Objects.nonNull(queryRslColltTaskDistr)) {
				ColltTaskDistrVO outColltTaskDistrVo = beanCopy(queryRslColltTaskDistr, new ColltTaskDistrVO());
				logger.debug("当前查询结果为:"+ outColltTaskDistrVo.toString());
				return outColltTaskDistrVo;
			} else {
				logger.debug("当前查询结果为空!");
			}
		} catch (Exception e) {
			logger.error("查询数据发生异常!", e);
		}
		return null;
	}

	@Override
	public List<ColltTaskDistrVO> queryInfosByVo(ColltTaskDistrVO colltTaskDistrVo) {
		logger.debug("根据参数查询信息开始，参数为："+ JSON.toJSONString(colltTaskDistrVo));
		List<ColltTaskDistrVO> result = null;
		try {
			ColltTaskDistr colltTaskDistr = new ColltTaskDistr();
			beanCopy(colltTaskDistrVo, colltTaskDistr);
			List<ColltTaskDistr> colltTaskDistrs = colltTaskDistrDao.queryInfosByVoByPage(colltTaskDistr);
			logger.debug("当根据参数查询信息的结果集数量为:"+ colltTaskDistrs.size());
			pageSet(colltTaskDistrs, colltTaskDistr);
			result = (List<ColltTaskDistrVO>) beansCopy(colltTaskDistrs, ColltTaskDistrVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		return result;
	}

	/**
	 * 查询用户权限数据
	 */
	public List<ColltTaskDistrVO> queryAllOwner(ColltTaskDistrVO colltTaskDistrVo) {

		logger.debug("当前查询本人所属数据信息的参数信息为:");
		List<ColltTaskDistrVO> list = null;
		try {
			List<ColltTaskDistr> colltTaskDistrs = colltTaskDistrDao.queryAllOwnerByPage(colltTaskDistrVo);
			logger.debug("当前查询本人所属数据信息的结果集数量为:"+ colltTaskDistrs.size());
			pageSet(colltTaskDistrs, colltTaskDistrVo);
			list = (List<ColltTaskDistrVO>) beansCopy(colltTaskDistrs, ColltTaskDistrVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		
		return list;
	
	}


	/**
	 * 查询当前机构权限数据
	 */
	public List<ColltTaskDistrVO> queryAllCurrOrg(ColltTaskDistrVO colltTaskDistrVo) {

		logger.debug("当前查询本人所属机构数据信息的参数信息为:");
		List<ColltTaskDistr> colltTaskDistrs = colltTaskDistrDao.queryAllCurrOrgByPage(colltTaskDistrVo);
		logger.debug("当前查询本人所属机构数据信息的结果集数量为:"+colltTaskDistrs.size());
		List<ColltTaskDistrVO> list = null;
		try {
			pageSet(colltTaskDistrs, colltTaskDistrVo);
			list = (List<ColltTaskDistrVO>) beansCopy(colltTaskDistrs, ColltTaskDistrVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		
		return list;
	
	}


	/**
	 * 查询当前机构及下属机构权限数据
	 */
	public List<ColltTaskDistrVO> queryAllCurrDownOrg(ColltTaskDistrVO colltTaskDistrVo) {

		logger.debug("当前查询本人所属机构及以下数据信息的参数信息为:");
		List<ColltTaskDistr> colltTaskDistrs = colltTaskDistrDao.queryAllCurrDownOrgByPage(colltTaskDistrVo);
		logger.debug("当前查询本人所属机构及以下数据信息的结果集数量为:"+ colltTaskDistrs.size());
		List<ColltTaskDistrVO> list = null;
		try {
			pageSet(colltTaskDistrs, colltTaskDistrVo);
			list = (List<ColltTaskDistrVO>) beansCopy(colltTaskDistrs, ColltTaskDistrVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		
		return list;
	
	}
	/**
	 * TODO: 用于导出查询用户权限数据<br>
	 *
	 * 0.1:wanglihua:2019/8/28 20:04: TODO: <br>
	 * @author wanglihua
	 * @params  * @param null
	 * @return
	 * @since 2019/8/28 20:04
	 * @date 2019/8/28 20:04
	 * @version 0.1
	 */
	@Override
	public List<ColltTaskDistrVO> queryExAllOwner(ColltTaskDistrVO colltTaskDistrVo) {
		logger.debug("当前查询本人所属数据信息的参数信息为:");
		List<ColltTaskDistrVO> list = null;
		try {
			List<ColltTaskDistr> colltTaskDistrs = colltTaskDistrDao.queryExAllOwner(colltTaskDistrVo);
			logger.debug("当前查询本人所属数据信息的结果集数量为:"+ colltTaskDistrs.size());
			pageSet(colltTaskDistrs, colltTaskDistrVo);
			list = (List<ColltTaskDistrVO>) beansCopy(colltTaskDistrs, ColltTaskDistrVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}

		return list;
	}
	/**
	 * TODO: 用于导出查询当前机构权限数据<br>
	 *
	 * 0.1:wanglihua:2019/8/28 20:04: TODO: <br>
	 * @author wanglihua
	 * @params  * @param null
	 * @return
	 * @since 2019/8/28 20:04
	 * @date 2019/8/28 20:04
	 * @version 0.1
	 */
	@Override
	public List<ColltTaskDistrVO> queryExAllCurrOrg(ColltTaskDistrVO colltTaskDistrVo) {
		logger.debug("当前查询本人所属机构数据信息的参数信息为:");
		List<ColltTaskDistr> colltTaskDistrs = colltTaskDistrDao.queryExAllCurrOrg(colltTaskDistrVo);
		logger.debug("当前查询本人所属机构数据信息的结果集数量为:"+colltTaskDistrs.size());
		List<ColltTaskDistrVO> list = null;
		try {
			pageSet(colltTaskDistrs, colltTaskDistrVo);
			list = (List<ColltTaskDistrVO>) beansCopy(colltTaskDistrs, ColltTaskDistrVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}

		return list;
	}
	/**
	 * TODO: 用于导出查询当前机构及下属机构权限数据<br>
	 *
	 * 0.1:wanglihua:2019/8/28 20:04: TODO: <br>
	 * @author wanglihua
	 * @params  * @param null
	 * @return
	 * @since 2019/8/28 20:04
	 * @date 2019/8/28 20:04
	 * @version 0.1
	 */
	@Override
	public List<ColltTaskDistrVO> queryExAllCurrDownOrg(ColltTaskDistrVO colltTaskDistrVo) {
		logger.debug("当前查询本人所属机构及以下数据信息的参数信息为:");
		List<ColltTaskDistr> colltTaskDistrs = colltTaskDistrDao.queryExAllCurrDownOrg(colltTaskDistrVo);
		logger.debug("当前查询本人所属机构及以下数据信息的结果集数量为:"+ colltTaskDistrs.size());
		List<ColltTaskDistrVO> list = null;
		try {
			pageSet(colltTaskDistrs, colltTaskDistrVo);
			list = (List<ColltTaskDistrVO>) beansCopy(colltTaskDistrs, ColltTaskDistrVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}

		return list;
	}

	/**
	 * TODO: 催收分案<br>
	 *
	 * 0.1:wanglihua:2019/9/9 9:18: TODO: <br>
	 * @author wanglihua
	 * @params  * @param null
	 * @return
	 * @since 2019/9/9 9:18
	 * @date 2019/9/9 9:18
	 * @version 0.1
	 */
	@Override
	public List<ColltTaskDistrVO> getOrgInfos(ColltTaskDistrVO colltTaskDistrVO) {
		logger.debug("当前查询本人所属机构及以下数据信息的参数信息为:"+colltTaskDistrVO );
		List<ColltTaskDistrVO> list = null;
		try {
			List<ColltTaskDistr> colltTaskDistrs = colltTaskDistrDao.getOrgInfos(colltTaskDistrVO);
			logger.debug("当前查询本人所属机构及以下数据信息的结果集数量为:"+ colltTaskDistrs.size());
			list = (List<ColltTaskDistrVO>) beansCopy(colltTaskDistrs, ColltTaskDistrVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		return list;
	}

	@Override
	public int batchInsert(List<ColltTaskDistrVO> enableDataList) {
		logger.debug("当前修改数据为:"+ enableDataList.toString());
		int num = 0;
		try {
			num = colltTaskDistrDao.batchInsert(enableDataList);
		} catch (Exception e) {
			logger.error("修改数据发生异常!", e);
			num = -1;
		}
		logger.debug("根据条件:"+ enableDataList +"修改的数据条数为"+ num);
		return num;
	}

	@Override
	public List<ColltTaskDistrVO> queryDatas4commByPage(ColltTaskDistrVO colltTaskDistrVO) {
		logger.debug("当前查询本人所属机构及以下数据信息的参数信息为:"+colltTaskDistrVO );
		List<ColltTaskDistrVO> list = null;
		try {
			List<ColltTaskDistr> colltTaskDistrs = colltTaskDistrDao.queryDatas4commByPage(colltTaskDistrVO);
			logger.debug("当前查询本人所属机构及以下数据信息的结果集数量为:"+ colltTaskDistrs.size());
			pageSet(colltTaskDistrs,colltTaskDistrVO);
			list = (List<ColltTaskDistrVO>) beansCopy(colltTaskDistrs, ColltTaskDistrVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		return list;
	}

	@Override
	public List<ColltTaskDistrVO> queryAllByCondition(ColltTaskDistrVO colltTaskDistrVO) {
		logger.debug("当前查询参数为："+colltTaskDistrVO.toString());
		List<ColltTaskDistrVO> result = null;
		try {
			ColltTaskDistr colltTaskDistr = new ColltTaskDistr();
			beanCopy(colltTaskDistrVO, colltTaskDistr);
			List<ColltTaskDistr> colltTaskDistrs = colltTaskDistrDao.queryAllByCondition(colltTaskDistr);
			logger.debug("当前查询信息的结果集数量为:"+ colltTaskDistrs.size());
			result = (List<ColltTaskDistrVO>) beansCopy(colltTaskDistrs, ColltTaskDistrVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		return result;
	}

	@Override
	public List<ColltTaskDistrVO> queryByCondition(ColltTaskDistrVO colltTaskDistrVO) {
		logger.debug("当前查询参数为："+colltTaskDistrVO.toString());
		List<ColltTaskDistrVO> result = null;
		try {
			ColltTaskDistr colltTaskDistr = new ColltTaskDistr();
			beanCopy(colltTaskDistrVO, colltTaskDistr);
			List<ColltTaskDistr> colltTaskDistrs = colltTaskDistrDao.queryByConditionByPage(colltTaskDistr);
			pageSet(colltTaskDistrs,colltTaskDistr);
			logger.debug("当前查询信息的结果集数量为:"+ colltTaskDistrs.size());
			result = (List<ColltTaskDistrVO>) beansCopy(colltTaskDistrs, ColltTaskDistrVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
		}
		return result;
	}

	@Override
	public int updateByBatchNo(ColltTaskDistrVO colltTaskDistrVo) {
		logger.debug("当前修改数据为:"+ colltTaskDistrVo.toString());
		int num = 0;
		try {
			ColltTaskDistr colltTaskDistr = new ColltTaskDistr();
			beanCopy(colltTaskDistrVo, colltTaskDistr);
			num = colltTaskDistrDao.updateByBatchNo(colltTaskDistr);
		} catch (Exception e) {
			logger.error("修改数据发生异常!", e);
			num = -1;
		}
		logger.debug("根据条件:"+ colltTaskDistrVo.toString() +"，修改的数据条数为:"+ num);
		return num;
	}

}
